package com.huitone.gddw.dao.monitoring;

import java.util.List;
import java.util.Map;

import com.huitone.gddw.dao.entity.AlarmReceiveUser;
import com.huitone.gddw.dao.entity.HostInterface;
import com.huitone.gddw.dao.entity.Index;
import com.huitone.gddw.dao.entity.InnormalEvent;
import com.huitone.gddw.dao.entity.ObjItem;
import com.huitone.gddw.dao.entity.ObjItemProperty;
import com.huitone.gddw.dao.entity.ObjectManagement;
import com.huitone.gddw.dao.entity.Trigger;

public interface ObjectItemDao {
	//通过搜索条件分页查询所有的对象	
	List<ObjectManagement> selectObjAllByObjType(Map<String,Object> map);
	
	//根据主对象ID查找该主机的IP地址
	HostInterface selectIPByObjId(String objId);
	ObjectManagement selectObjById(String objId);
	
	Integer selectObjCountByType(Map<String, Object> map);
	//通过id查询相关子项
	List<ObjItem> selectObjItemById (Map<String, String> map);
	
	
	ObjItem selectObjItemByItemName (Map<String, String> map);
	
	List<ObjItem> selectObjItemByType (Map<String, String> map);
	
	//获取未添加的指标名称
	List<ObjItemProperty> getIndexName(String itemId);
	
	//获取已添加的指标
	List<Index> selectIndex(String objItemId);
							
	Trigger selectAlarm(Map<String, String> map);	
	//查询指标对应的子项id
	String selectItemIdByKeyId(String keyId);
	//获取告警接受人列表
	List<AlarmReceiveUser> selectAlarmReceiveUser(String objId);
	
	List<Map<String, String>> selectValue (String objItemId);
	
	String selectKeyIdByItemId (ObjItemProperty pro);
	
	List<Map<String, String>> selectCnValue (String objItemId);
	//获取告警负责人
	AlarmReceiveUser getAlarmReceiveUser(Map<String, String> map);
	//获取当前异常告警信息
	List<InnormalEvent> getNowExcptionInfo(Map<String, String> map);
	//获取当前异常告警数量
	Integer getNowExcptionCount(Map<String, String> map);
	//获取全部异常告警信息
	List<InnormalEvent> getAllExcptionInfo(Map<String, String> map);
	//获取全部异常告警数量
	Integer getAllExcptionCount(Map<String, String> map);
	//获取全部预警告警数量
	Integer getAllWarnCount(Map<String, String> map);
	
	List<ObjectManagement> selectObjName(Map<String, String> map);
	
	List<Integer> loadLastCollectTime(String itemId);
	
	List<String> selectHistoryValue(Map<String,Object> map);
	
	List<Integer> selectHistoryClock(Map<String,Object> map);
	
//	void saveObj(ObjectManagement obj);
//	
//	void saveObjItem(ObjItem objItem);
	//更新指标属性表
	void updateIndex(ObjItemProperty pro);
	//更新子项表
	void updateItem(ObjItem item);
	//添加告警触发表
	void saveAlarm(Trigger trigger);
	//更新告警触发表
	void updateAlarm(Trigger trigger);
	//更新预警接受人表
	void updateUser(AlarmReceiveUser user);
	
}
